home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Caml Light 0.61 / Source / src / compiler / ty_error.ml < prev    next >
Encoding:
Text File  |  1993-09-24  |  4.4 KB  |  179 lines  |  [TEXT/MPS ]

  1. (* Error messages for the typechecker *)
  2.  
  3. #open "misc";;
  4. #open "const";;
  5. #open "globals";;
  6. #open "errors";;
  7. #open "location";;
  8. #open "syntax";;
  9. #open "types";;
  10. #open "pr_type";;
  11.  
  12. let wrong_type_err actual_ty expected_ty =
  13.   reset_type_var_name();
  14.   prerr_string " of type ";
  15.   prerr_type actual_ty;
  16.   prerr_endline "";
  17.   prerr_begline " cannot be used with type ";
  18.   prerr_type expected_ty;
  19.   prerr_endline "";
  20.   raise Toplevel
  21. ;;
  22.  
  23. let unbound_type_var_err v (Typexp(_, loc)) =
  24.   prerr_location loc;
  25.   prerr_begline " Type variable '"; prerr_string v;
  26.   prerr_endline " is unbound";
  27.   raise Toplevel
  28. ;;
  29. let type_arity_err cstr args loc =
  30.   prerr_location loc;
  31.   prerr_begline " Type constructor "; prerr_type_constr cstr;
  32.   prerr_string " of arity "; prerr_int cstr.info.ty_arity;
  33.   prerr_string " is used with arity "; prerr_int(list_length args);
  34.   prerr_endline ".";
  35.   raise Toplevel
  36. ;;
  37. let non_linear_pattern_err (Pat(_, loc)) name =
  38.   prerr_location loc;
  39.   prerr_begline " Variable "; prerr_string name;
  40.   prerr_endline " is bound twice in this pattern.";
  41.   raise Toplevel
  42. ;;
  43. let orpat_should_be_closed_err (Pat(_, loc)) =
  44.   prerr_location loc;
  45.   prerr_begline " A pattern with '|' cannot bind variables.";
  46.   prerr_endline "";
  47.   raise Toplevel
  48. ;;
  49. let pat_wrong_type_err (Pat(_,loc)) =
  50.   prerr_location loc; prerr_begline " Pattern"; wrong_type_err
  51. ;;
  52. let expr_wrong_type_err (Expr(_,loc)) =
  53.   prerr_location loc; prerr_begline " Expression"; wrong_type_err
  54. ;;
  55.  
  56. let ill_shaped_match_err (Expr(_, loc)) =
  57.   prerr_location loc;
  58.   prerr_begline " Curried matching with cases of different lengths.";
  59.   prerr_endline "";
  60.   raise Toplevel
  61. ;;
  62.  
  63. let duplicate_param_in_type_decl_err loc =
  64.   prerr_location loc;
  65.   prerr_begline " Repeated type parameter in type declaration.";
  66.   prerr_endline "";
  67.   raise Toplevel
  68. ;;
  69.  
  70. let duplicate_constr_in_type_decl_err kind loc constr_name =
  71.   prerr_location loc;
  72.   prerr_begline " Constructor "; prerr_string kind;
  73.   prerr_string constr_name;
  74.   prerr_endline "is defined twice.";
  75.   raise Toplevel
  76. ;;
  77.  
  78. let not_mutable_err id loc =
  79.   prerr_location loc;
  80.   prerr_begline " Variable ";
  81.   prerr_string id;
  82.   prerr_endline " is not mutable.";
  83.   raise Toplevel
  84. ;;
  85.  
  86. let undefined_type_err ty_desc =
  87.   prerr_input_name();
  88.   prerr_begline " Type "; prerr_type_constr ty_desc;
  89.   prerr_endline " is declared in the interface, but not implemented.";
  90.   raise Toplevel
  91. ;;
  92.  
  93. let undefined_value_err val_desc =
  94.   prerr_input_name();
  95.   prerr_begline " Value "; prerr_value val_desc;
  96.   prerr_endline " is declared in the interface, but not implemented.";
  97.   raise Toplevel
  98. ;;
  99.  
  100. let type_mismatch_err val_desc val_desc' =
  101.   prerr_input_name();
  102.   prerr_begline " Value "; prerr_value val_desc;
  103.   reset_type_var_name();
  104.   prerr_string " is declared with type ";
  105.   prerr_type (type_instance val_desc.info.val_typ);
  106.   prerr_endline "";
  107.   prerr_begline " and defined with type ";
  108.   prerr_type (type_instance val_desc'.info.val_typ);
  109.   prerr_endline "";
  110.   raise Toplevel
  111. ;;
  112.  
  113. let cannot_generalize_err loc vars ty =
  114.   prerr_location loc;
  115.   reset_type_var_name();
  116.   prerr_begline " Cannot generalize";
  117.   do_list (fun v -> prerr_string " "; prerr_type v) vars;
  118.   prerr_string " in ";
  119.   prerr_type ty;
  120.   prerr_endline "";
  121.   raise Toplevel
  122. ;;
  123.  
  124. let label_err msg (Expr(_,loc)) lbl =
  125.   prerr_location loc;
  126.   prerr_begline " Label ";
  127.   prerr_label lbl;
  128.   prerr_endline msg;
  129.   raise Toplevel
  130. ;;
  131.  
  132. let rec_unknown_size_err ty loc
  133.   = prerr_location loc;
  134.     prerr_begline " Cannot define recursive values of type ";
  135.     prerr_type ty;
  136.     prerr_endline "";
  137.     raise Toplevel
  138. ;;
  139.  
  140. let non_constant_constr_err cstr loc =
  141.   prerr_location loc;
  142.   prerr_begline " Constructor ";
  143.   prerr_constr cstr;
  144.   prerr_endline " expects an argument";
  145.   raise Toplevel
  146. ;;
  147.  
  148. let constant_constr_err cstr loc =
  149.   prerr_location loc;
  150.   prerr_begline " The constant constructor ";
  151.   prerr_constr cstr;
  152.   prerr_endline " cannot accept an argument";
  153.   raise Toplevel
  154. ;;
  155.  
  156. let illegal_letrec_pat loc =
  157.   prerr_location loc;
  158.   prerr_begline
  159.    " Only variables are allowed as left-hand sides of \"let rec\"";
  160.   prerr_endline "";
  161.   raise Toplevel
  162. ;;
  163.  
  164. let illegal_letrec_expr loc =
  165.   prerr_location loc;
  166.   prerr_begline
  167.    " This kind of expression is not allowed in right-hand sides of \"let rec\"";
  168.   prerr_endline "";
  169.   raise Toplevel
  170. ;;
  171.  
  172. let illegal_type_redefinition loc ty_desc =
  173.   prerr_location loc;
  174.   prerr_begline " The type ";
  175.   prerr_type_constr ty_desc;
  176.   prerr_endline " must not be redefined.";
  177.   raise Toplevel
  178. ;;
  179.